home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 2 / Gold Medal Software Volume 2 (Gold Medal) (1994).iso / windows / win31 / macsyma.arj / MACSDEMO.EXE / GENERAL.OUT < prev    next >
Text File  |  1993-09-15  |  64KB  |  1,232 lines

  1.  
  2. (c1) /*           GENERAL INTRODUCTORY DEMONSTRATION OF MACSYMA
  3.  
  4. We recommend that you do `RESET(ALL)$' and `KILL(ALL)$' before running this demo. 
  5. When the prompt `_' appears, push the ENTER key to continue. */
  6. (loadprint:false, pause_prompt:"_")$
  7.  
  8. (c2) (clearscreen(),
  9.  disp(dpart(" WELCOME TO MACSYMA ")),disp(" "),
  10.  disp(" POWER OF SYMBOLIC MATH SOFTWARE "),
  11.  disp(" ALGEBRA "),
  12.  disp(" CALCULUS "),
  13.  disp(" SYMBOLIC APPROXIMATION METHODS "),
  14.  disp(" NUMERICAL ANALYSIS "),
  15.  disp(" GRAPHICS ") )$
  16. |$label(0,15,Times New Roman,)$box( WELCOME TO MACSYMA )
  17.  
  18. |$label(0,15,Times New Roman,) 
  19.  
  20. |$label(0,15,Times New Roman,) POWER OF SYMBOLIC MATH SOFTWARE 
  21.  
  22. |$label(0,15,Times New Roman,) ALGEBRA 
  23.  
  24. |$label(0,15,Times New Roman,) CALCULUS 
  25.  
  26. |$label(0,15,Times New Roman,) SYMBOLIC APPROXIMATION METHODS 
  27.  
  28. |$label(0,15,Times New Roman,) NUMERICAL ANALYSIS 
  29.  
  30. |$label(0,15,Times New Roman,) GRAPHICS 
  31.  
  32.  
  33. (c3) (clearscreen(),
  34.  disp(dpart(" ALGEBRA ")),
  35.  disp(" Simultaneous Algebraic Equations "),
  36.  disp(" Matrix Computations "),
  37.  disp(" Simplification of Expressions "),
  38.  disp(" Trigonometry "),
  39.  disp(" Pattern Matching "),
  40.  disp(" Sums of Series "))$
  41. |$label(0,15,Times New Roman,)$box( ALGEBRA )
  42.  
  43. |$label(0,15,Times New Roman,) Simultaneous Algebraic Equations 
  44.  
  45. |$label(0,15,Times New Roman,) Matrix Computations 
  46.  
  47. |$label(0,15,Times New Roman,) Simplification of Expressions 
  48.  
  49. |$label(0,15,Times New Roman,) Trigonometry 
  50.  
  51. |$label(0,15,Times New Roman,) Pattern Matching 
  52.  
  53. |$label(0,15,Times New Roman,) Sums of Series 
  54.  
  55.  
  56. (c4) (clearscreen(),
  57.  disp(dpart(" ALGEBRA  . . .  Simultaneous Algebraic Equations ")),
  58.  disp(" Example: Solve three linear equations for X, Y, Z "))$
  59. |$label(0,15,Times New Roman,)$box( ALGEBRA  . . .  Simultaneous Algebraic Equations )
  60.  
  61. |$label(0,15,Times New Roman,) Example: Solve three linear equations for X$, Y$, Z 
  62.  
  63.  
  64. (c5) eq1: 3*x+5*y+d*z=13*a;
  65. |$label(0,15,Times New Roman,$(d5$))d$in( )z$hinge()$in( + )5$in( )y$hinge()$in( + )3$in( )x$hinge()$in( = )13$hinge()$in( )a
  66.  
  67. (c6) eq2: 19*x+e*y+29*z=37*b;
  68. |$label(0,15,Times New Roman,$(d6$))29$in( )z$hinge()$in( + )e$in( )y$hinge()$in( + )19$in( )x$hinge()$in( = )37$hinge()$in( )b
  69.  
  70. (c7) eq3: 43*x+47*y+f*z=61*c;
  71. |$label(0,15,Times New Roman,$(d7$))f$in( )z$hinge()$in( + )47$in( )y$hinge()$in( + )43$in( )x$hinge()$in( = )61$hinge()$in( )c
  72.  
  73. (c8) solve([eq1,eq2,eq3],[x,y,z]);
  74. |$label(0,15,Times New Roman,$(d8$))$open([)$open([)x$hinge()$in( = )$q(a$in( )$paren(17719$in( - )13$in( )e$in( )f,$(,$))$in( + )185$in( )b$in( )f$in( + )d$in( )$paren(61$in( )c$in( )e$in( - )1739$in( )b,$(,$))$in( - )8845$in( )c,$in( - )3$in( )e$in( )f$in( + )95$in( )f$in( + )d$in( )$paren(43$in( )e$in( - )893,$(,$))$in( - )2146)$ina($, )$hinge()y$hinge()$in( = )$q(a$in( )$paren(247$in( )f$in( - )16211,$(,$))$in( - )111$in( )b$in( )f$in( + )$paren(1591$in( )b$in( - )1159$in( )c,$(,$))$in( )d$in( + )5307$in( )c,$in( - )3$in( )e$in( )f$in( + )95$in( )f$in( + )d$in( )$paren(43$in( )e$in( - )893,$(,$))$in( - )2146)$ina($, )$hinge()z$hinge()$in( = )$q(a$in( )$paren(559$in( )e$in( - )11609,$(,$))$in( - )183$in( )c$in( )e$in( + )5795$in( )c$in( - )2738$in( )b,$in( - )3$in( )e$in( )f$in( + )95$in( )f$in( + )d$in( )$paren(43$in( )e$in( - )893,$(,$))$in( - )2146)$close(])$close(])
  75.  
  76. (c9) (clearscreen(),
  77.  disp(" ALGEBRA  . . .  Simultaneous Algebraic Equations, continued "),
  78.  disp(" Example: Solve three non-linear equations for X, Y, Z "))$
  79. |$label(0,15,Times New Roman,) ALGEBRA  . . .  Simultaneous Algebraic Equations$, continued 
  80.  
  81. |$label(0,15,Times New Roman,) Example: Solve three non-linear equations for X$, Y$, Z 
  82.  
  83.  
  84. (c10) eq1: a*x*y*z = 42;
  85. |$label(0,15,Times New Roman,$(d10$))a$hinge()$in( )x$hinge()$in( )y$hinge()$in( )z$hinge()$in( = )42
  86.  
  87. (c11) eq2: -z+y+x = -2;
  88. |$label(0,15,Times New Roman,$(d11$))$in( - )z$hinge()$in( + )y$hinge()$in( + )x$hinge()$in( = )$in( - )2
  89.  
  90. (c12) eq3: -3*z+2*y+3*x = -9;
  91. |$label(0,15,Times New Roman,$(d12$))$in( - )3$in( )z$hinge()$in( + )2$in( )y$hinge()$in( + )3$in( )x$hinge()$in( = )$in( - )9
  92.  
  93. (c13) solve([eq1,eq2,eq3],[x,y,z]);
  94. |$label(0,15,Times New Roman,$(d13$))$open([)$open([)x$hinge()$in( = )$q($sqrt(25$in( )$sup(a,2)$in( + )56$in( )a)$in( - )5$in( )a,2$in( )a)$ina($, )$hinge()y$hinge()$in( = )3$ina($, )$hinge()z$hinge()$in( = )$q($sqrt(25$in( )a$in( + )56)$in( + )5$in( )$sqrt(a),2$in( )$sqrt(a))$close(])$ina($, )$hinge()$open([)x$hinge()$in( = )$in( - )$q($sqrt(25$in( )$sup(a,2)$in( + )56$in( )a)$in( + )5$in( )a,2$in( )a)$ina($, )$hinge()y$hinge()$in( = )3$ina($, )$hinge()z$hinge()$in( = )$in( - )$q($sqrt(25$in( )a$in( + )56)$in( - )5$in( )$sqrt(a),2$in( )$sqrt(a))$close(])$close(])
  95.  
  96. (c14) (remvalue(eq1,eq2,eq3),
  97.  
  98.  clearscreen(),
  99.  disp(dpart(" ALGEBRA  . . .  Matrix Computations ")),
  100.  disp(" Example: Find the determinant of a matrix ") )$
  101. |$label(0,15,Times New Roman,)$box( ALGEBRA  . . .  Matrix Computations )
  102.  
  103. |$label(0,15,Times New Roman,) Example: Find the determinant of a matrix 
  104.  
  105.  
  106. (c15) mat1:matrix([1,a,a^2],[1,b,b^2],[1,c,c^2]);
  107. |$label(0,15,Times New Roman,$(d15$))$matrix(3,3,1,a,$sup(a,2),1,b,$sup(b,2),1,c,$sup(c,2))
  108.  
  109. (c16) factor(determinant(mat1));
  110. |$label(0,15,Times New Roman,$(d16$))$open($()b$hinge()$in( - )a$close($))$hinge()$in( )$open($()c$hinge()$in( - )a$close($))$hinge()$in( )$open($()c$hinge()$in( - )b$close($))
  111.  
  112. (c17) /*                         Example: Invert a matrix           */
  113.           mat1^^-1,factor,detout;
  114. |$label(0,15,Times New Roman,$(d17$))$q($matrix(3,3,b$in( )c$in( )$paren(c$in( - )b,$(,$)),$in( - )a$in( )c$in( )$paren(c$in( - )a,$(,$)),a$in( )b$in( )$paren(b$in( - )a,$(,$)),$sup(b,2)$in( - )$sup(c,2),$sup(c,2)$in( - )$sup(a,2),$sup(a,2)$in( - )$sup(b,2),c$in( - )b,a$in( - )c,b$in( - )a),$paren(b$in( - )a,$(,$))$in( )$paren(c$in( - )a,$(,$))$in( )$paren(c$in( - )b,$(,$)))
  115.  
  116. (c18) (remvalue(mat1),
  117.  
  118.  clearscreen(),
  119.  disp(" ALGEBRA  . . .  Matrix Computations, continued "),
  120.  disp(" Example: Find eigenvalues and eigenvectors of a matrix ") )$
  121. |$label(0,15,Times New Roman,) ALGEBRA  . . .  Matrix Computations$, continued 
  122.  
  123. |$label(0,15,Times New Roman,) Example: Find eigenvalues and eigenvectors of a matrix 
  124.  
  125.  
  126. (c19) mat1:matrix([2,6],[6,a]);
  127. |$label(0,15,Times New Roman,$(d19$))$matrix(2,2,2,6,6,a)
  128.  
  129. (c20) evec:eigenvectors(mat1);
  130. |$label(0,15,Times New Roman,$(d20$))$open([)$open([)$open([)$in( - )$q($sqrt($sup(a,2)$in( - )4$in( )a$in( + )148)$in( - )a$in( - )2,2)$ina($, )$q($sqrt($sup(a,2)$in( - )4$in( )a$in( + )148)$in( + )a$in( + )2,2)$close(])$ina($, )$hinge()$open([)1$ina($, )1$close(])$close(])$ina($, )$hinge()$open([)1$ina($, )$hinge()$in( - )$q($sqrt($sup(a,2)$in( - )4$in( )a$in( + )148)$in( - )a$in( + )2,12)$close(])$ina($, )$hinge()$open([)1$ina($, )$hinge()$q($sqrt($sup(a,2)$in( - )4$in( )a$in( + )148)$in( + )a$in( - )2,12)$close(])$close(])
  131.  
  132. (c21) /*   We can examine these results graphically.
  133. */
  134. (l1:part(evec,1,1,1),l2:part(evec,1,1,2),
  135.  equalscale:false,ymin:-10,ymax:10,
  136.  plot([l1,l2],a,-50,50,[0,2],"Matrix Parameter `A'",Eigenvalue,
  137.       "Two Eigenvalues as Functions of the Matrix Parameter `A'") )$
  138.  
  139. (c22) (remvalue(evec,l1,l2,mat1,ymax,ymin),reset(equalscale),
  140.  
  141.  clearscreen(),
  142.  disp(dpart(" ALGEBRA  . . .  Simplification of Expressions ")),
  143.  disp(" Example: Expand and factor a multivariate polynomial ") )$
  144. |$label(0,15,Times New Roman,)$box( ALGEBRA  . . .  Simplification of Expressions )
  145.  
  146. |$label(0,15,Times New Roman,) Example: Expand and factor a multivariate polynomial 
  147.  
  148.  
  149. (c23) expr:(y^3-x^2)^3*(x+y+z)^2;
  150. |$label(0,15,Times New Roman,$(d23$))$sup($paren($sup(y,3)$in( - )$sup(x,2),$(,$)),3)$hinge()$in( )$sup($paren(z$in( + )y$in( + )x,$(,$)),2)
  151.  
  152. (c24) expr:expand(expr);
  153. |$label(0,15,Times New Roman,$(d24$))$sup(y,9)$in( )$sup(z,2)$hinge()$in( - )3$in( )$sup(x,2)$in( )$sup(y,6)$in( )$sup(z,2)$hinge()$in( + )3$in( )$sup(x,4)$in( )$sup(y,3)$in( )$sup(z,2)$hinge()$in( - )$sup(x,6)$in( )$sup(z,2)$hinge()$in( + )2$in( )$sup(y,10)$in( )z$hinge()$in( + )2$in( )x$in( )$sup(y,9)$in( )z$hinge()$in( - )6$in( )$sup(x,2)$in( )$sup(y,7)$in( )z$hinge()$in( - )6$in( )$sup(x,3)$in( )$sup(y,6)$in( )z$hinge()$in( + )6$in( )$sup(x,4)$in( )$sup(y,4)$in( )z$hinge()$in( + )6$in( )$sup(x,5)$in( )$sup(y,3)$in( )z$hinge()$in( - )2$in( )$sup(x,6)$in( )y$in( )z$hinge()$in( - )2$in( )$sup(x,7)$in( )z$hinge()$in( + )$sup(y,11)$hinge()$in( + )2$in( )x$in( )$sup(y,10)$hinge()$in( + )$sup(x,2)$in( )$sup(y,9)$hinge()$in( - )3$in( )$sup(x,2)$in( )$sup(y,8)$hinge()$in( - )6$in( )$sup(x,3)$in( )$sup(y,7)$hinge()$in( - )3$in( )$sup(x,4)$in( )$sup(y,6)$hinge()$in( + )3$in( )$sup(x,4)$in( )$sup(y,5)$hinge()$in( + )6$in( )$sup(x,5)$in( )$sup(y,4)$hinge()$in( + )3$in( )$sup(x,6)$in( )$sup(y,3)$hinge()$in( - )$sup(x,6)$in( )$sup(y,2)$hinge()$in( - )2$in( )$sup(x,7)$in( )y$hinge()$in( - )$sup(x,8)
  154.  
  155. (c25) factor(expr);
  156. |$label(0,15,Times New Roman,$(d25$))$sup($paren($sup(y,3)$in( - )$sup(x,2),$(,$)),3)$hinge()$in( )$sup($paren(z$in( + )y$in( + )x,$(,$)),2)
  157.  
  158. (c26) (clearscreen(),
  159.  disp(" ALGEBRA  . . .  Simplification of Expressions, continued "),
  160.  disp(" Example: Simplify a rational expression ") )$
  161. |$label(0,15,Times New Roman,) ALGEBRA  . . .  Simplification of Expressions$, continued 
  162.  
  163. |$label(0,15,Times New Roman,) Example: Simplify a rational expression 
  164.  
  165.  
  166. (c27) expr:(sqrt(r^2+a^2)+a)*(sqrt(r^2+b^2)+b)/r^2
  167.  -(sqrt(r^2+b^2)+sqrt(r^2+a^2)+b+a)/(sqrt(r^2+b^2)+sqrt(r^2+a^2)-b-a);
  168. |$label(0,15,Times New Roman,$(d27$))$q($paren($sqrt($sup(r,2)$in( + )$sup(a,2))$in( + )a,$(,$))$in( )$paren($sqrt($sup(r,2)$in( + )$sup(b,2))$in( + )b,$(,$)),$sup(r,2))$hinge()$in( - )$q($sqrt($sup(r,2)$in( + )$sup(b,2))$in( + )$sqrt($sup(r,2)$in( + )$sup(a,2))$in( + )b$in( + )a,$sqrt($sup(r,2)$in( + )$sup(b,2))$in( + )$sqrt($sup(r,2)$in( + )$sup(a,2))$in( - )b$in( - )a)
  169.  
  170. (c28) ratsimp(expr);
  171. |$label(0,15,Times New Roman,$(d28$))0
  172.  
  173. (c29) (clearscreen(),
  174.  disp(" ALGEBRA  . . .  Simplification of Expressions, continued "),
  175.  disp(" Example: Simplifying an expression subject to constraints "))$
  176. |$label(0,15,Times New Roman,) ALGEBRA  . . .  Simplification of Expressions$, continued 
  177.  
  178. |$label(0,15,Times New Roman,) Example: Simplifying an expression subject to constraints 
  179.  
  180.  
  181. (c30) [constraint1:y^2+x^2 = m,        constraint2:-c^3-b^3+a^3 = 3*n];
  182. |$label(0,15,Times New Roman,$(d30$))$open([)$sup(y,2)$hinge()$in( + )$sup(x,2)$hinge()$in( = )m$ina($, )$hinge()$in( - )$sup(c,3)$hinge()$in( - )$sup(b,3)$hinge()$in( + )$sup(a,3)$hinge()$in( = )3$hinge()$in( )n$close(])
  183.  
  184. (c31) expr:expand((-c^3-b^3+a^3)^2*(y^2+x^2)^2);
  185. |$label(0,15,Times New Roman,$(d31$))$sup(c,6)$in( )$sup(y,4)$hinge()$in( + )2$in( )$sup(b,3)$in( )$sup(c,3)$in( )$sup(y,4)$hinge()$in( - )2$in( )$sup(a,3)$in( )$sup(c,3)$in( )$sup(y,4)$hinge()$in( + )$sup(b,6)$in( )$sup(y,4)$hinge()$in( - )2$in( )$sup(a,3)$in( )$sup(b,3)$in( )$sup(y,4)$hinge()$in( + )$sup(a,6)$in( )$sup(y,4)$hinge()$in( + )2$in( )$sup(c,6)$in( )$sup(x,2)$in( )$sup(y,2)$hinge()$in( + )4$in( )$sup(b,3)$in( )$sup(c,3)$in( )$sup(x,2)$in( )$sup(y,2)$hinge()$in( - )4$in( )$sup(a,3)$in( )$sup(c,3)$in( )$sup(x,2)$in( )$sup(y,2)$hinge()$in( + )2$in( )$sup(b,6)$in( )$sup(x,2)$in( )$sup(y,2)$hinge()$in( - )4$in( )$sup(a,3)$in( )$sup(b,3)$in( )$sup(x,2)$in( )$sup(y,2)$hinge()$in( + )2$in( )$sup(a,6)$in( )$sup(x,2)$in( )$sup(y,2)$hinge()$in( + )$sup(c,6)$in( )$sup(x,4)$hinge()$in( + )2$in( )$sup(b,3)$in( )$sup(c,3)$in( )$sup(x,4)$hinge()$in( - )2$in( )$sup(a,3)$in( )$sup(c,3)$in( )$sup(x,4)$hinge()$in( + )$sup(b,6)$in( )$sup(x,4)$hinge()$in( - )2$in( )$sup(a,3)$in( )$sup(b,3)$in( )$sup(x,4)$hinge()$in( + )$sup(a,6)$in( )$sup(x,4)
  186.  
  187. (c32) scsimp(expr,constraint1,constraint2);
  188. |$label(0,15,Times New Roman,$(d32$))9$hinge()$in( )$sup(m,2)$hinge()$in( )$sup(n,2)
  189.  
  190. (c33) (remvalue(constraint1,constraint2,expr),
  191.  
  192.  clearscreen(),
  193.  disp(" ALGEBRA  . . .  Trigonometry "),
  194.  disp(" Example: Apply trigonometric identities "))$
  195. |$label(0,15,Times New Roman,) ALGEBRA  . . .  Trigonometry 
  196.  
  197. |$label(0,15,Times New Roman,) Example: Apply trigonometric identities 
  198.  
  199.  
  200. (c34) expr:sin(2*y+x);
  201. |$label(0,15,Times New Roman,$(d34$))sin$paren(2$in( )y$in( + )x)
  202.  
  203. (c35) expr:trigexpand(expr);
  204. |$label(0,15,Times New Roman,$(d35$))cos$paren(x)$in( )sin$paren(2$in( )y)$hinge()$in( + )sin$paren(x)$in( )cos$paren(2$in( )y)
  205.  
  206. (c36) expr:expand(trigexpand(expr));
  207. |$label(0,15,Times New Roman,$(d36$))$in( - )sin$paren(x)$in( )$sup(sin,2)$paren(y)$hinge()$in( + )2$in( )cos$paren(x)$in( )cos$paren(y)$in( )sin$paren(y)$hinge()$in( + )sin$paren(x)$in( )$sup(cos,2)$paren(y)
  208.  
  209. (c37) /*   Perform the inverse operation. */
  210.      expr:trigreduce(expr);
  211. |$label(0,15,Times New Roman,$(d37$))sin$paren(2$in( )y$in( + )x)
  212.  
  213. (c38) /*
  214.             Example: Expand a more complex trigonometric expression.
  215. */
  216.      expr: - sin(y-x)*sin(z-x)*sin(z-y) - cos(y-x)*cos(z-x)*sin(z-y)
  217.            + cos(y-x)*sin(z-x)*cos(z-y) - sin(y-x)*cos(z-x)*cos(z-y)$
  218.  
  219. (c39) expr:expand(trigexpand(expr));
  220. |$label(0,15,Times New Roman,$(d39$))0
  221.  
  222. (c40) (remvalue(expr),
  223.  
  224.  clearscreen(),
  225.  disp(dpart(" ALGEBRA  . . .  Pattern Matching ")),
  226.  disp(" Example: Bessel identity J[-N](X) = (-1)^N J[N](X) for integer N>0 ") )$
  227. |$label(0,15,Times New Roman,)$box( ALGEBRA  . . .  Pattern Matching )
  228.  
  229. |$label(0,15,Times New Roman,) Example: Bessel identity J[-N]$(X$) = $(-1$)^N J[N]$(X$) for integer N>0 
  230.  
  231.  
  232. (c41) /* Macsyma starts out not knowing the identity. */  J[-3](X) ;
  233. |$label(0,15,Times New Roman,$(d41$))$sub(j,- 3)$paren(x)
  234.  
  235. (c42) /* First, define a predicate testing for a positive integer. */
  236.       posintp(n):=is(integerp(n) and n>0)$
  237.  
  238. (c43) /* Define dummy variables for N and X for use in pattern matching. */
  239.       matchdeclare(n_match,posintp,x_match,true)$
  240.  
  241. (c44) /* Teach Macsyma the Bessel identity. */
  242.       tellsimp(j[-n_match](x_match),j[n_match](x_match)*(-1)^n_match)$
  243.  
  244. (c45) [j[-3](x),j[3](x)];
  245. |$label(0,15,Times New Roman,$(d45$))$open([)$in( - )$sub(j,3)$paren(x)$ina($, )$hinge()$sub(j,3)$paren(x)$close(])
  246.  
  247. (c46) [j[-4](x),j[4](x)];
  248. |$label(0,15,Times New Roman,$(d46$))$open([)$sub(j,4)$paren(x)$ina($, )$hinge()$sub(j,4)$paren(x)$close(])
  249.  
  250. (c47) (kill(j,n_match,x,x_match),remfunction(posintp),
  251.  
  252.  clearscreen(),
  253.  if get('nusum,'version)=false then load('nusum),
  254.  disp(dpart(" ALGEBRA  . . .  Sums of Series ")),
  255.  disp(" Example: Find indefinite sum of a series in closed form. ") )$
  256. |$label(0,15,Times New Roman,)$box( ALGEBRA  . . .  Sums of Series )
  257.  
  258. |$label(0,15,Times New Roman,) Example: Find indefinite sum of a series in closed form. 
  259.  
  260.  
  261. (c48) (expr:i/(4*i^2-1)^2,'sum(expr,i,0,n));
  262. |$label(0,15,Times New Roman,$(d48$))$sum($q(i,$sup($paren(4$in( )$sup(i,2)$in( - )1,$(,$)),2)),i = 0,n)
  263.  
  264. (c49) nusum(expr,i,1,n);
  265. |$label(0,15,Times New Roman,$(d49$))$q(n$in( )$paren(n$in( + )1,$(,$)),2$in( )$sup($paren(2$in( )n$in( + )1,$(,$)),2))
  266.  
  267. (c50) (remvalue(expr),
  268.  
  269.  clearscreen(),
  270.  disp(dpart(" CALCULUS ")),
  271.  disp(" Derivatives and Limits "),
  272.  disp(" Indefinite and Definite Integrals "),
  273.  disp(" Laplace and Fourier Transforms "),
  274.  disp(" Ordinary Differential Equations "),
  275.  disp(" Integral Equations "),
  276.  disp(" Vector Analysis "),
  277.  disp(" Finite Difference Equations "),
  278.  disp(" Tensor Analysis ") )$
  279. |$label(0,15,Times New Roman,)$box( CALCULUS )
  280.  
  281. |$label(0,15,Times New Roman,) Derivatives and Limits 
  282.  
  283. |$label(0,15,Times New Roman,) Indefinite and Definite Integrals 
  284.  
  285. |$label(0,15,Times New Roman,) Laplace and Fourier Transforms 
  286.  
  287. |$label(0,15,Times New Roman,) Ordinary Differential Equations 
  288.  
  289. |$label(0,15,Times New Roman,) Integral Equations 
  290.  
  291. |$label(0,15,Times New Roman,) Vector Analysis 
  292.  
  293. |$label(0,15,Times New Roman,) Finite Difference Equations 
  294.  
  295. |$label(0,15,Times New Roman,) Tensor Analysis 
  296.  
  297.  
  298. (c51) (clearscreen(),
  299.  disp(dpart(" CALCULUS  . . .  Derivatives and Limits ")),
  300.  disp(" A classic textbook example of differentiation ") )$
  301. |$label(0,15,Times New Roman,)$box( CALCULUS  . . .  Derivatives and Limits )
  302.  
  303. |$label(0,15,Times New Roman,) A classic textbook example of differentiation 
  304.  
  305.  
  306. (c52) f(x):=x^x^x;
  307. |$label(0,15,Times New Roman,$(d52$))f$paren(x)$hinge()$in( := )$sup(x,$sup(x,x))
  308.  
  309. (c53) diff(f(x),x);
  310. |$label(0,15,Times New Roman,$(d53$))$sup(x,$sup(x,x))$hinge()$in( )$open($()$sup(x,x)$in( )log$paren(x)$in( )$paren(log$paren(x)$in( + )1,$(,$))$hinge()$in( + )$sup(x,x$in( - )1)$close($))
  311.  
  312. (c54) /*
  313.                 Example: Differentiating a nested function */
  314.      f(x):=erf(tan(acos(log(x))));
  315. |$label(0,15,Times New Roman,$(d54$))f$paren(x)$hinge()$in( := )erf$paren(tan$paren(acos$paren(log$paren(x))))
  316.  
  317. (c55) diff(f(x),x),ratsimp;
  318. |$label(0,15,Times New Roman,$(d55$))$in( - )$q(2$in( )$sup($e(),1$in( - )$q(1,$sup(log,2)$paren(x))),$sqrt($greektext(p))$in( )x$in( )$sup(log,2)$paren(x)$in( )$sqrt(1$in( - )$sup(log,2)$paren(x)))
  319.  
  320. (c56) (clearscreen(),
  321.  disp(" CALCULUS  . . .  Derivatives and Limits, continued "),
  322.  disp(" Example: Direction-dependent limits ") )$
  323. |$label(0,15,Times New Roman,) CALCULUS  . . .  Derivatives and Limits$, continued 
  324.  
  325. |$label(0,15,Times New Roman,) Example: Direction-dependent limits 
  326.  
  327.  
  328. (c57) limit(tan(x),x,%pi/2,plus);
  329. |$label(0,15,Times New Roman,$(d57$))$greektext(-) $greektext(Ñ)
  330.  
  331. (c58) limit(tan(x),x,%pi/2,minus);
  332. |$label(0,15,Times New Roman,$(d58$))$greektext(Ñ)
  333.  
  334. (c59) limit(tan(x),x,%pi/2);
  335. |$label(0,15,Times New Roman,$(d59$))infinity
  336.  
  337. (c60) /*               Example: Limits at infinity */
  338.      f(x):= (1+1/x)^x;
  339. |$label(0,15,Times New Roman,$(d60$))f$paren(x)$hinge()$in( := )$sup($paren(1$in( + )$q(1,x),$(,$)),x)
  340.  
  341. (c61) limit(f(x),x,inf);
  342. |$label(0,15,Times New Roman,$(d61$))$e()
  343.  
  344. (c62) (remfunction(f),
  345.  
  346.  clearscreen(),
  347.  disp(dpart(" CALCULUS  . . .  Indefinite and Definite Integrals ")),
  348.  disp(" Example: Evaluate an indefinite integral. ") )$
  349. |$label(0,15,Times New Roman,)$box( CALCULUS  . . .  Indefinite and Definite Integrals )
  350.  
  351. |$label(0,15,Times New Roman,) Example: Evaluate an indefinite integral. 
  352.  
  353.  
  354. (c63) f(x):=(log(x)-1)/(log(x)^2-x^2);
  355. |$label(0,15,Times New Roman,$(d63$))f$paren(x)$hinge()$in( := )$q(log$paren(x)$in( - )1,$sup(log,2)$paren(x)$in( - )$sup(x,2))
  356.  
  357. (c64) integrate(f(x),x);
  358. |$label(0,15,Times New Roman,$(d64$))$q(log$paren(log$paren(x)$in( + )x),2)$hinge()$in( - )$q(log$paren(log$paren(x)$in( - )x),2)
  359.  
  360. (c65) /*   Verify that differentiation returns the original integrand. */
  361.      diff(%,x),ratsimp;
  362. |$label(0,15,Times New Roman,$(d65$))$q(log$paren(x)$in( - )1,$sup(log,2)$paren(x)$in( - )$sup(x,2))
  363.  
  364. (c66) (clearscreen(),
  365.  disp(" CALCULUS  . . .  Indefinite and Definite Integrals, continued "),
  366.  disp(" Example: Evaluate some definite integrals. "))$
  367. |$label(0,15,Times New Roman,) CALCULUS  . . .  Indefinite and Definite Integrals$, continued 
  368.  
  369. |$label(0,15,Times New Roman,) Example: Evaluate some definite integrals. 
  370.  
  371.  
  372. (c67) assume(a>0,b>0)$
  373.  
  374. (c68) 'integrate(sin(a*x)^2/(x^2),x,0,inf)=integrate(sin(a*x)^2/(x^2),x,0,inf);
  375. |$label(0,15,Times New Roman,$(d68$))$integrate($q($sup(sin,2)$paren(a$in( )x),$sup(x,2)),x,0,$greektext(Ñ))$hinge()$in( = )$q($greektext(p)$in( )a,2)
  376.  
  377. (c69) /* Macsyma can use information about symbolic parameters. */
  378.      declare([a,b],even)$
  379.  
  380. (c70) 'integrate(cos(x)^a*sin(x)^b,x,0,2*%pi)=integrate(cos(x)^a*sin(x)^b,x,0,2*%pi);
  381. |$label(0,15,Times New Roman,$(d70$))$integrate($sup(cos,a)$paren(x)$in( )$sup(sin,b)$paren(x),x,0,2$in( )$greektext(p))$hinge()$in( = )2$hinge()$in( )$greektext(B)$paren($q(a$in( + )1,2)$ina($, )$hinge()$q(b$in( + )1,2))
  382.  
  383. (c71) (forget(a>0,b>0),remove([a,b],even),
  384.  
  385.  clearscreen(),
  386.  disp(dpart(" CALCULUS  . . .  Laplace and Fourier Transforms ")),
  387.  disp(" Example: Use Laplace transform to solve ordinary differential equation. ") )$
  388. |$label(0,15,Times New Roman,)$box( CALCULUS  . . .  Laplace and Fourier Transforms )
  389.  
  390. |$label(0,15,Times New Roman,) Example: Use Laplace transform to solve ordinary differential equation. 
  391.  
  392.  
  393. (c72) (derivabbrev:true, eq:diff(x(t),t)=-2*x(t)+cos(t)-1);
  394. |$label(0,15,Times New Roman,$(d72$))$sub(x$paren(t),t)$hinge()$in( = )cos$paren(t)$hinge()$in( - )2$in( )x$paren(t)$hinge()$in( - )1
  395.  
  396. (c73) /*   Initial condition: X(0)=1
  397.  
  398.      Take the Laplace transform. */
  399.      (assume(s>0),lt_eq:laplace(eq,t,s));
  400. |$label(0,15,Times New Roman,$(d73$))s$in( )laplace$paren(x$paren(t)$ina($, )$hinge()t$ina($, )$hinge()s)$hinge()$in( - )x$paren(0)$hinge()$in( = )$in( - )2$in( )laplace$paren(x$paren(t)$ina($, )$hinge()t$ina($, )$hinge()s)$hinge()$in( + )$q(s,$sup(s,2)$in( + )1)$hinge()$in( - )$q(1,s)
  401.  
  402. (c74) /*   Solve for the Laplace transform of X. */
  403.      soln:solve(lt_eq,laplace(x(t),t,s));
  404. |$label(0,15,Times New Roman,$(d74$))$open([)laplace$paren(x$paren(t)$ina($, )$hinge()t$ina($, )$hinge()s)$hinge()$in( = )$q(x$paren(0)$in( )$sup(s,3)$in( + )x$paren(0)$in( )s$in( - )1,$sup(s,4)$in( + )2$in( )$sup(s,3)$in( + )$sup(s,2)$in( + )2$in( )s)$close(])
  405.  
  406. (c75) (clearscreen(),
  407.  disp(" CALCULUS  . . .  Laplace and Fourier Transforms "),
  408.  disp(" Laplace transform solution of an O.D.E., continued "))$
  409. |$label(0,15,Times New Roman,) CALCULUS  . . .  Laplace and Fourier Transforms 
  410.  
  411. |$label(0,15,Times New Roman,) Laplace transform solution of an O.D.E.$, continued 
  412.  
  413.  
  414. (c76) /*   Take the inverse Laplace transform. */
  415.      soln:ilt(part(soln,1,2),s,t);
  416. |$label(0,15,Times New Roman,$(d76$))$q(sin$paren(t),5)$hinge()$in( + )$q(2$in( )cos$paren(t),5)$hinge()$in( + )$q($paren(10$in( )x$paren(0)$in( + )1,$(,$))$in( )$sup($e(),$in( - )2$in( )t),10)$hinge()$in( - )$q(1,2)
  417.  
  418. (c77) /* Insert the initial condition. */
  419.      soln:subst(1,x(0),soln);
  420. |$label(0,15,Times New Roman,$(d77$))$q(sin$paren(t),5)$hinge()$in( + )$q(2$in( )cos$paren(t),5)$hinge()$in( + )$q(11$in( )$sup($e(),$in( - )2$in( )t),10)$hinge()$in( - )$q(1,2)
  421.  
  422. (c78) (equalscale:false,ymax:1,ymin:-1,
  423.  plot(soln,t,0,10,time,amplitude,"X(t) versus time") )$
  424.  
  425. (c79) (remvalue(eq,lt_eq,soln,ymax,ymin), reset(derivabbrev,equalscale),
  426.  
  427.  clearscreen(),
  428.  if get('fourier,'version)=false then load("fourier"),
  429.  disp(" CALCULUS  . . .  Laplace and Fourier Transforms, continued ") )$
  430. |$label(0,15,Times New Roman,) CALCULUS  . . .  Laplace and Fourier Transforms$, continued 
  431.  
  432.  
  433. (c80) /* Example: Fourier transform of rectified sine wave */
  434. ft:fourier(abs(sin(t)),t,%pi);
  435. |$label(0,15,Times New Roman,$(e80$))$sub(a,0)$hinge()$in( = )$q(2,$greektext(p))
  436.  
  437. |$label(0,15,Times New Roman,$(e81$))$sub(a,%nn)$hinge()$in( = )$in( - )$q(2$in( )$sup($paren($in( - )1,$(,$)),%nn)$in( + )2,$greektext(p)$in( )$paren($sup(%nn,2)$in( - )1,$(,$)))
  438.  
  439. |$label(0,15,Times New Roman,$(e82$))$sub(b,%nn)$hinge()$in( = )0
  440.  
  441. |$label(0,15,Times New Roman,$(d82$))$open([)e80$ina($, )$hinge()e81$ina($, )$hinge()e82$close(])
  442.  
  443. (c83) fourexpand(ft,t,%pi,inf);
  444. |$label(0,15,Times New Roman,$(d83$))$q(2,$greektext(p))$hinge()$in( - )$q($sum($q($paren(2$in( )$sup($paren($in( - )1,$(,$)),%nn)$in( + )2,$(,$))$in( )cos$paren(%nn$in( )t),$sup(%nn,2)$in( - )1),%nn = 1,$greektext(Ñ)),$greektext(p))
  445.  
  446. (c84) (remvalue(ft),
  447.  
  448.  clearscreen(),
  449.  disp(dpart(" CALCULUS  . . .  Ordinary Differential Equations ")),
  450.  disp(" Example: Solve a second-order initial value problem. ") )$
  451. |$label(0,15,Times New Roman,)$box( CALCULUS  . . .  Ordinary Differential Equations )
  452.  
  453. |$label(0,15,Times New Roman,) Example: Solve a second-order initial value problem. 
  454.  
  455.  
  456. (c85) (depends(y,x),eq:diff(y,x,2)+b*y*diff(y,x)^2=0);
  457. |$label(0,15,Times New Roman,$(d85$))$q($sup(d,2)y,d$sup(x,2))$hinge()$in( + )b$in( )y$in( )$sup($paren($q(dy,dx),$(,$)),2)$hinge()$in( = )0
  458.  
  459. (c86) gen_soln:ode(eq,y,x);
  460. |$label(0,15,Times New Roman,$(d86$))$q($sqrt(2)$in( )$sqrt($greektext(p))$in( )erf$paren($q($sqrt($in( - )b)$in( )y,$sqrt(2))),2$in( )%k1$in( )$sqrt($in( - )b))$hinge()$in( = )x$hinge()$in( + )%k2
  461.  
  462. (c87) (clearscreen(),
  463.  disp(" CALCULUS  . . .  Ordinary Differential Equations "),
  464.  disp(" Example: Second-order initial value problem, continued "))$
  465. |$label(0,15,Times New Roman,) CALCULUS  . . .  Ordinary Differential Equations 
  466.  
  467. |$label(0,15,Times New Roman,) Example: Second-order initial value problem$, continued 
  468.  
  469.  
  470. (c88) spec_soln:ratsimp(ic2(gen_soln,x=0,y=0,'diff(y,x)=2));
  471. |$label(0,15,Times New Roman,$(d88$))$q($sqrt(2)$in( )$sqrt($greektext(p))$in( )$sup($e(),$in( - )$q(b$in( )$sup(y,2),2))$in( )erf$paren($q($sqrt($in( - )b)$in( )y,$sqrt(2))),4$in( )$sqrt($in( - )b))$hinge()$in( = )x
  472.  
  473. (c89) /* Macsyma will tell you what method it used. */
  474.       method;
  475. |$label(0,15,Times New Roman,$(d89$))freeofx
  476.  
  477. (c90) (clearscreen(),
  478.  disp(" CALCULUS  . . .  Ordinary Differential Equations, continued "),
  479.  disp(" Example: Solve a second-order boundary value problem. "))$
  480. |$label(0,15,Times New Roman,) CALCULUS  . . .  Ordinary Differential Equations$, continued 
  481.  
  482. |$label(0,15,Times New Roman,) Example: Solve a second-order boundary value problem. 
  483.  
  484.  
  485. (c91) /* Use the same O.D.E. as above, with boundary conditions. */
  486.      (assume(b<0),spec_soln:bc2(gen_soln,x=0,y=1,x=1,y=3));
  487. |$label(0,15,Times New Roman,$(d91$))$q($sqrt(2)$in( )$sqrt($greektext(p))$in( )erf$paren($q($sqrt($in( - )b)$in( )y,$sqrt(2))),$sqrt(2)$in( )$sqrt($greektext(p))$in( )erf$paren($q(3$in( )$sqrt($in( - )b),$sqrt(2)))$in( - )$sqrt(2)$in( )$sqrt($greektext(p))$in( )erf$paren($q($sqrt($in( - )b),$sqrt(2))))$hinge()$in( = )x$hinge()$in( + )$q(erf$paren($q($sqrt(2)$in( )$sqrt($in( - )b),2)),erf$paren($q(3$in( )$sqrt(2)$in( )$sqrt($in( - )b),2))$in( - )erf$paren($q($sqrt(2)$in( )$sqrt($in( - )b),2)))
  488.  
  489. (c92) (clearscreen(),
  490.  disp(" CALCULUS  . . .  Ordinary Differential Equations "),
  491.  disp(" Example: Second-order boundary value problem, continued "))$
  492. |$label(0,15,Times New Roman,) CALCULUS  . . .  Ordinary Differential Equations 
  493.  
  494. |$label(0,15,Times New Roman,) Example: Second-order boundary value problem$, continued 
  495.  
  496.  
  497. (c93) /* Solve the implicit relation given above for Y(X). */
  498.      solve(spec_soln,y);
  499. |$label(0,15,Times New Roman,$(d93$))$open([)erf$paren($q($sqrt($in( - )b)$in( )y,$sqrt(2)))$hinge()$in( = )$in( - )$q(erf$paren($q(3$in( )$sqrt($in( - )b),$sqrt(2)))$in( )$paren(erf$paren($q(3$in( )$sqrt(2)$in( )$sqrt($in( - )b),2))$in( )x$in( + )erf$paren($q($sqrt(2)$in( )$sqrt($in( - )b),2))$in( )$paren(1$in( - )x,$(,$)),$(,$))$in( + )erf$paren($q($sqrt($in( - )b),$sqrt(2)))$in( )$paren(erf$paren($q($sqrt(2)$in( )$sqrt($in( - )b),2))$in( )$paren(x$in( - )1,$(,$))$in( - )erf$paren($q(3$in( )$sqrt(2)$in( )$sqrt($in( - )b),2))$in( )x,$(,$)),erf$paren($q($sqrt(2)$in( )$sqrt($in( - )b),2))$in( - )erf$paren($q(3$in( )$sqrt(2)$in( )$sqrt($in( - )b),2)))$close(])
  500.  
  501. (c94) (remvalue(eq,gen_soln,spec_soln), remove(y,dependency),
  502.  
  503.  clearscreen(),
  504.  if get('inteqn,'version)=false then load("inteqn"),
  505.  disp(dpart(" CALCULUS  . . .  Integral Equations ")) )$
  506. |$label(0,15,Times New Roman,)$box( CALCULUS  . . .  Integral Equations )
  507.  
  508.  
  509. (c95) /*   Example: Solve an integral equation of the second kind.
  510. */
  511. (assume(x>0), eq: p(x)-'integrate(x*u*p(u),u,0,x)-exp(-x)*(1+x+x^2)+x);
  512. |$label(0,15,Times New Roman,$(d95$))p$paren(x)$hinge()$in( - )$paren($sup(x,2)$in( + )x$in( + )1,$(,$))$in( )$sup($e(),$in( - )x)$hinge()$in( - )$paren($integrate(u$in( )p$paren(u),u,0,x),$(,$))$in( )x$hinge()$in( + )x
  513.  
  514. (c96) ieqn(eq,p(x),vlfrnk)$
  515. |$label(-1,15,Times New Roman,)Default 4th arg$, number of iterations or coll. parms.: $in() $in()1
  516. |$label(-1,15,Times New Roman,)Default 5th arg$, initial guess: $in() $in()none
  517.  
  518. |$label(0,15,Times New Roman,$(e96$))$open([)$sup($e(),$in( - )x)$ina($, )$hinge()vlfrnk$close(])
  519.  
  520. (c97) (clearscreen(),
  521.  disp(" CALCULUS  . . .  Integral Equations, continued ") )$
  522. |$label(0,15,Times New Roman,) CALCULUS  . . .  Integral Equations$, continued 
  523.  
  524.  
  525. (c98) /*   Example: Solve two coupled integral equations of the second kind.
  526. */
  527. eq:[p(x)='integrate(x*u*p(u)*q(u),u,0,2),q(x)='integrate(x^2*u^2*q(u)+x*u*p(u),u,1,2)];
  528. |$label(0,15,Times New Roman,$(d98$))$open([)p$paren(x)$hinge()$in( = )$open($()$integrate(u$in( )p$paren(u)$in( )q$paren(u),u,0,2)$close($))$hinge()$in( )x$ina($, )$hinge()q$paren(x)$hinge()$in( = )$integrate($open($()$sup(u,2)$in( )q$paren(u)$in( )$sup(x,2)$hinge()$in( + )u$in( )p$paren(u)$in( )x$close($)),u,1,2)$close(])
  529.  
  530. (c99) ieqn(eq,[p(x),q(x)],flfrnk2nd)$
  531. |$label(-1,15,Times New Roman,)Default 4th arg$, number of iterations or coll. parms.: $in() $in()1
  532. |$label(-1,15,Times New Roman,)Default 5th arg$, initial guess: $in() $in()none
  533.  
  534. |$label(0,15,Times New Roman,$(e99$))$open([)$open([)0$ina($, )$hinge()0$close(])$ina($, )$hinge()flfrnk2nd$close(])
  535.  
  536. |$label(0,15,Times New Roman,$(e100$))$open([)$open([)$in( - )$q(39$in( )x,56)$ina($, )$hinge()$q(75$in( )$sup(x,2),64)$hinge()$in( - )$q(13$in( )x,8)$close(])$ina($, )$hinge()flfrnk2nd$close(])
  537.  
  538. (c101) (remvalue(eq),forget(x>0),
  539.  
  540.  clearscreen(),
  541.  if get('vect,'version)=false then load("vect"),
  542.  disp(dpart(" CALCULUS  . . . Vector Analysis ")),
  543.  disp(" Some vector identities and simplifications ") )$
  544. |$label(0,15,Times New Roman,)$box( CALCULUS  . . . Vector Analysis )
  545.  
  546. |$label(0,15,Times New Roman,) Some vector identities and simplifications 
  547.  
  548.  
  549. (c102) (declare([b,d,e,h,j], nonscalar), depends([b,d,e,h,j,rho],t))$
  550.  
  551. (c103) div(curl(b));
  552. |$label(0,15,Times New Roman,$(d103$))0
  553.  
  554. (c104) (expandall:true,vectorsimp(j~(e~b)));
  555. |$label(0,15,Times New Roman,$(d104$))$paren(b$in( . )j,$(,$))$in( )e$hinge()$in( - )b$in( )$paren(e$in( . )j,$(,$))
  556.  
  557. (c105) vectorsimp(curl(curl(b)));
  558. |$label(0,15,Times New Roman,$(d105$))grad div b$hinge()$in( - )laplacian b
  559.  
  560. (c106) (expandall:false,
  561.  
  562.  clearscreen(),
  563.  disp(" CALCULUS  . . . Vector Analysis, continued "),
  564.  disp(" Example: Maxwell's equations "))$
  565. |$label(0,15,Times New Roman,) CALCULUS  . . . Vector Analysis$, continued 
  566.  
  567. |$label(0,15,Times New Roman,) Example: Maxwell's equations 
  568.  
  569.  
  570. (c107) expr1: curl(e) + diff(b,t);
  571. |$label(0,15,Times New Roman,$(d107$))curl e$hinge()$in( + )$q(db,dt)
  572.  
  573. (c108) expr2: div(b);
  574. |$label(0,15,Times New Roman,$(d108$))div b
  575.  
  576. (c109) expr3: curl(h) - diff(d,t)-j;
  577. |$label(0,15,Times New Roman,$(d109$))$in( - )j$hinge()$in( + )curl h$hinge()$in( - )$q(dd,dt)
  578.  
  579. (c110) expr4: div(d) - rho;
  580. |$label(0,15,Times New Roman,$(d110$))div d$hinge()$in( - )$greektext(r)
  581.  
  582. (c111) (clearscreen(),
  583.  disp(" CALCULUS  . . . Vector Analysis "),
  584.  disp(" Maxwell's equations, continued "))$
  585. |$label(0,15,Times New Roman,) CALCULUS  . . . Vector Analysis 
  586.  
  587. |$label(0,15,Times New Roman,) Maxwell's equations$, continued 
  588.  
  589.  
  590. (c112) /* Express the third equation in cylindrical coordinates.
  591. */
  592. (scalefactors([[r*cos(theta),r*sin(theta),z],r,theta,z]),
  593.  depends([b,d,e,h,j,rho],[r,theta,z]))$
  594.  
  595. (c113) (eq3:express(expr3),eq3:ev(eq3,diff));
  596. |$label(0,15,Times New Roman,$(d113$))$open([)$q($q(d,d$greektext(q))$paren($sub(h,z))$in( - )$paren(r,|,|)$in( )$q(d,dz)$paren($sub(h,$greektext(q))),$paren(r,|,|))$hinge()$in( - )$q(d,dt)$paren($sub(d,r))$hinge()$in( - )$sub(j,r)$ina($, )$hinge()$in( - )$q(d,dr)$paren($sub(h,z))$hinge()$in( - )$q(d,dt)$paren($sub(d,$greektext(q)))$hinge()$in( - )$sub(j,$greektext(q))$hinge()$in( + )$q(d,dz)$paren($sub(h,r))$ina($, )$hinge()$in( - )$q(d,dt)$paren($sub(d,z))$hinge()$in( - )$sub(j,z)$hinge()$in( + )$q($paren(r,|,|)$in( )$q(d,dr)$paren($sub(h,$greektext(q)))$in( + )$q($paren(r,|,|)$in( )$sub(h,$greektext(q)),r)$in( - )$q(d,d$greektext(q))$paren($sub(h,r)),$paren(r,|,|))$close(])
  597.  
  598. (c114) (clearscreen(),
  599.  if get('fdif_pde,'version)=false then load("fdif_pde"),
  600.  disp(" CALCULUS  . . .  Finite Difference Equations "),
  601.  disp(" Maxwell's equations, continued "))$
  602. |$label(0,15,Times New Roman,) CALCULUS  . . .  Finite Difference Equations 
  603.  
  604. |$label(0,15,Times New Roman,) Maxwell's equations$, continued 
  605.  
  606.  
  607. (c115) /* Generate finite difference equation for radial component of equation 3.
  608. */
  609. deq:difference_pde(part(eq3,1),[d[r],h[th],h[z],j[r]],[r,th,z],
  610.       [dr,hth,hz,jr],[delr,delth,delz],'central,t,delt,'exp_euler);
  611. |$label(0,15,Times New Roman,$(d115$))$q($q(d,d$greektext(q))$paren($sub(hz,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4))$in( - )$paren($sub(r,n1),|,|)$in( )$q(d,d$sub(z,n3))$paren($sub(h,$greektext(q))),$paren($sub(r,n1),|,|))$hinge()$in( - )$q($sub(dr,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4$in( + )1)$in( - )$sub(dr,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4),delt)$hinge()$in( - )$sub(jr,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4)
  612.  
  613. (c116) (clearscreen(),
  614.  disp(" CALCULUS  . . .  Finite Difference Equations "),
  615.  disp(" Maxwell's equations, continued "))$
  616. |$label(0,15,Times New Roman,) CALCULUS  . . .  Finite Difference Equations 
  617.  
  618. |$label(0,15,Times New Roman,) Maxwell's equations$, continued 
  619.  
  620.  
  621. (c117) /* Solve for future-time variable and translate to Fortran.
  622. */
  623. sol:solve(deq,dr[n1,n2,n3,n4+1]);
  624. |$label(0,15,Times New Roman,$(d117$))$open([)$sub(dr,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4$in( + )1)$hinge()$in( = )$in( - )$q(delt$in( )$paren($sub(r,n1),|,|)$in( )$q(d,d$sub(z,n3))$paren($sub(h,$greektext(q)))$in( - )delt$in( )$q(d,d$greektext(q))$paren($sub(hz,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4))$in( + )$paren(delt$in( )$sub(jr,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4)$in( - )$sub(dr,n1$ina($, )$hinge()n2$ina($, )$hinge()n3$ina($, )$hinge()n4),$(,$))$in( )$paren($sub(r,n1),|,|),$paren($sub(r,n1),|,|))$close(])
  625.  
  626. (c118) fortran(first(sol))$
  627.       DR(N1,N2,N3,N4+1) = -(DELT*ABS(R(N1))*'DIFF(H(THETA),Z(N3),1)-DELT
  628.      1   *'DIFF(HZ(N1,N2,N3,N4),THETA,1)+(DELT*JR(N1,N2,N3,N4)-DR(N1,N2,
  629.      2   N3,N4))*ABS(R(N1)))/ABS(R(N1))
  630.  
  631. (c119) (remvalue(deq,eq3,expr1,expr2,expr3,expr4,sol), 
  632.  remove(".",commutative,[b,d,e,h,j,rho],dependency,[b,d,e,h,j], nonscalar),
  633.  
  634.  clearscreen(),kill(chr2,g,lg,mcs,ug),
  635.  if get('itensor,'version)=false then load("itensor") else init_itensor(),
  636.  if get('ctensor,'version)=false then load("ctensor") else clear_ctensor(),
  637.  disp(dpart(" CALCULUS  . . .  Tensor Analysis ")),
  638.  disp("Example: Hydrodynamic equations in covariant form") )$
  639. |$label(0,15,Times New Roman,)$box( CALCULUS  . . .  Tensor Analysis )
  640.  
  641. |$label(0,15,Times New Roman,)Example: Hydrodynamic equations in covariant form
  642.  
  643.  
  644. (c120) /*       Define metric, mass density, velocity, flow, stress tensors.
  645.  */
  646. (imetric(g),
  647.  depends([dens,vel],t),
  648.  components(flow([],[i]),dens([],[])*vel([],[i])),
  649.  components(strs([],[i,j]),dens([],[])*vel([],[i])*vel([],[j])
  650.           +pres([],[])*g([],[i,j])))$
  651.  
  652. (c121) /*            Write the momentum conservation equation.
  653. */
  654. ishow(momentum_eq: diff(flow([],[i]),t) 
  655.                    + canform(rename(covdiff(strs([],[i,j]),j))));
  656. |$label(0,15,Times New Roman,$(d121$))dens$in( )$sup(vel,%1)$in( )$sup(vel,%2)$in( )$sup($sub(ichr2,%1 %2),i)$hinge()$in( + )pres$in( )$sup(g,%1$in( )%2)$in( )$sup($sub(ichr2,%1 %2),i)$hinge()$in( + )pres$in( )$sup(g,%1$in( )i)$in( )$sup($sub(ichr2,%1 %2),%2)$hinge()$in( + )dens$in( )$sup(vel,%2)$in( )$sup(vel,i)$in( )$sup($sub(ichr2,%1 %2),%1)$hinge()$in( + )dens$in( )$q(d,dt)$paren($sup(vel,i))$hinge()$in( + )$sup(vel,i)$in( )$q(ddens,dt)$hinge()$in( + )dens$in( )$sup(vel,%1)$in( )$sup($sub(vel,$,%1),i)$hinge()$in( + )dens$in( )$sup($sub(vel,$,%1),%1)$in( )$sup(vel,i)$hinge()$in( + )$sub(dens,$,%1)$in( )$sup(vel,%1)$in( )$sup(vel,i)$hinge()$in( + )pres$in( )$sup($sub(g,$,%1),%1$in( )i)$hinge()$in( + )$sub(pres,$,%1)$in( )$sup(g,%1$in( )i)
  657.  
  658. (c122) clearscreen()$
  659.  
  660. (c123) /*  Convert the momentum equation to component tensor form.  */
  661. mom_macs: ic_convert(mom([],[i])=momentum_eq);
  662. |$label(0,15,Times New Roman,$(d123$))for i thru dimf do $sub(mom,i)$hinge()$in( : )dens$in( )sum$paren(sum$paren($sub(vel,%1)$in( )$sub(vel,%2)$in( )$sub(mcs,%1$ina($, )%2$ina($, )i)$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$ina($, )$hinge()%2$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )pres$in( )sum$paren(sum$paren($sub(ug,%1$ina($, )%2)$in( )$sub(mcs,%1$ina($, )%2$ina($, )i)$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$ina($, )$hinge()%2$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )pres$in( )sum$paren(sum$paren($sub(ug,%1$ina($, )i)$in( )$sub(mcs,%1$ina($, )%2$ina($, )%2)$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$ina($, )$hinge()%2$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )dens$in( )$sub(vel,i)$in( )sum$paren(sum$paren($sub(vel,%2)$in( )$sub(mcs,%1$ina($, )%2$ina($, )%1)$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$ina($, )$hinge()%2$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )dens$in( )$q(d,dt)$paren($sub(vel,i))$hinge()$in( + )$sub(vel,i)$in( )$q(ddens,dt)$hinge()$in( + )dens$in( )sum$paren($sub(vel,%1)$in( )diff$paren($sub(vel,i)$ina($, )$hinge()$sub($greektext(w),%1))$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )dens$in( )$sub(vel,i)$in( )sum$paren(diff$paren($sub(vel,%1)$ina($, )$hinge()$sub($greektext(w),%1))$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )$sub(vel,i)$in( )sum$paren(diff$paren(dens$ina($, )$hinge()$sub($greektext(w),%1))$in( )$sub(vel,%1)$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )pres$in( )sum$paren(diff$paren($sub(ug,%1$ina($, )i)$ina($, )$hinge()$sub($greektext(w),%1))$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)$hinge()$in( + )sum$paren(diff$paren(pres$ina($, )$hinge()$sub($greektext(w),%1))$in( )$sub(ug,%1$ina($, )$hinge()i)$ina($, )$hinge()%1$ina($, )$hinge()1$ina($, )$hinge()dimf)
  663.  
  664. (c124) (clearscreen(),
  665.  disp(" CALCULUS  . . .  Tensor Analysis "),
  666.  disp(" Hydrodynamics, continued ") )$
  667. |$label(0,15,Times New Roman,) CALCULUS  . . .  Tensor Analysis 
  668.  
  669. |$label(0,15,Times New Roman,) Hydrodynamics$, continued 
  670.  
  671.  
  672. (c125) /*         Now specify a metric ... use 3-d spherical coordinates.
  673. */
  674. (dim:3,omega:[r,theta,phi], depends([dens,pres,vel],[r,theta,phi,t]),
  675. lg:matrix([1,0,0],[0,omega[1]^2,0],[0,0,omega[1]^2*sin(omega[2])^2]),
  676. ev(ug:invert(lg),ratsimp),christof(false),lg);
  677. |$label(0,15,Times New Roman,$(d125$))$matrix(3,3,1,0,0,0,$sup(r,2),0,0,0,$sup(r,2)$in( )$sup(sin,2)$paren($greektext(q)))
  678.  
  679. (c126) (clearscreen(),
  680.  disp(" CALCULUS  . . .  Tensor Analysis "),
  681.  disp(" Hydrodynamics, continued ") )$
  682. |$label(0,15,Times New Roman,) CALCULUS  . . .  Tensor Analysis 
  683.  
  684. |$label(0,15,Times New Roman,) Hydrodynamics$, continued 
  685.  
  686.  
  687. (c127) /*      Express one of the momentum equations in these coordinates.
  688. */
  689. (''mom_macs,mom[1]);
  690. |$label(0,15,Times New Roman,$(d127$))dens$in( )$paren($in( - )$sup($sub(vel,3),2)$in( )r$in( )$sup(sin,2)$paren($greektext(q))$in( - )$sup($sub(vel,2),2)$in( )r,$(,$))$hinge()$in( + )$sub(vel,1)$in( )dens$in( )$paren($q($sub(vel,2)$in( )cos$paren($greektext(q)),sin$paren($greektext(q)))$in( + )$q(2$in( )$sub(vel,1),r),$(,$))$hinge()$in( + )$q(dpres,dr)$hinge()$in( + )$sub(vel,1)$in( )$paren($sub(vel,2)$in( )$q(ddens,d$greektext(q))$in( + )$sub(vel,1)$in( )$q(ddens,dr)$in( + )$sub(vel,3)$in( )$q(ddens,d$greektext(f)),$(,$))$hinge()$in( + )$sub(vel,1)$in( )$q(ddens,dt)$hinge()$in( + )$sub(vel,1)$in( )$paren($q(d,d$greektext(f))$paren($sub(vel,3))$in( + )$q(d,d$greektext(q))$paren($sub(vel,2))$in( + )$q(d,dr)$paren($sub(vel,1)),$(,$))$in( )dens$hinge()$in( + )$paren($sub(vel,2)$in( )$q(d,d$greektext(q))$paren($sub(vel,1))$in( + )$sub(vel,1)$in( )$q(d,dr)$paren($sub(vel,1))$in( + )$sub(vel,3)$in( )$q(d,d$greektext(f))$paren($sub(vel,1)),$(,$))$in( )dens$hinge()$in( + )$q(d,dt)$paren($sub(vel,1))$in( )dens
  691.  
  692. (c128) /*        Express the forcing terms of the equation in Fortran.
  693. */
  694. fortran(part(mom[1],[1,2]))$
  695.       DENS*(-VEL(3)**2*R*SIN(THETA)**2-VEL(2)**2*R)+VEL(1)*DENS*(VEL(2)*
  696.      1   COS(THETA)/SIN(THETA)+2*VEL(1)/R)
  697.  
  698. (c129) (remvalue(lg,mom_macs,momentum_eq,omega,ug),remove([dens,vel],dependency),
  699.  init_itensor(), remarray(mom),
  700.  
  701.  clearscreen(),
  702.  disp(dpart(" SYMBOLIC APPROXIMATION METHODS ")),
  703.  disp(" "),
  704.  disp(" Taylor Series "),
  705.  disp(" "),
  706.  disp(" Pade Approximations "),
  707.  disp(" "),
  708.  disp(" Perturbation Solutions of O.D.E.'s ") )$
  709. |$label(0,15,Times New Roman,)$box( SYMBOLIC APPROXIMATION METHODS )
  710.  
  711. |$label(0,15,Times New Roman,) 
  712.  
  713. |$label(0,15,Times New Roman,) Taylor Series 
  714.  
  715. |$label(0,15,Times New Roman,) 
  716.  
  717. |$label(0,15,Times New Roman,) Pade Approximations 
  718.  
  719. |$label(0,15,Times New Roman,) 
  720.  
  721. |$label(0,15,Times New Roman,) Perturbation Solutions of O.D.E.'s 
  722.  
  723.  
  724. (c130) (clearscreen(),
  725.  disp(dpart(" SYMBOLIC APPROXIMATION METHODS  . . .  Taylor Series ")) )$
  726. |$label(0,15,Times New Roman,)$box( SYMBOLIC APPROXIMATION METHODS  . . .  Taylor Series )
  727.  
  728.  
  729. (c131) f(x,y):=atan(sqrt(a*x^2+b*y));
  730. |$label(0,15,Times New Roman,$(d131$))f$paren(x$ina($, )$hinge()y)$hinge()$in( := )atan$paren($sqrt(a$in( )$sup(x,2)$in( + )b$in( )y))
  731.  
  732. (c132) taylor(f(x,y),x,0,4,y,0,4);
  733. |$label(0,15,Times New Roman,$(d132$) /T/ )$sqrt(b)$in( )$sqrt(y)$in( - )$q($sqrt(b)$in( )b$in( )$sup(y,3$in(/)2),3)$in( + )$q($sqrt(b)$in( )$sup(b,2)$in( )$sup(y,5$in(/)2),5)$in( - )$q($sqrt(b)$in( )$sup(b,3)$in( )$sup(y,7$in(/)2),7)$in( + ). . .$hinge()$in( + )$paren($in( - )$q($sqrt(b)$in( )$sup(b,2)$in( )a$in( )$sup(y,5$in(/)2),2)$in( + )$q($sqrt(b)$in( )b$in( )a$in( )$sup(y,3$in(/)2),2)$in( - )$q($sqrt(b)$in( )a$in( )$sqrt(y),2)$in( + )$q($sqrt(b)$in( )a,2$in( )b$in( )$sqrt(y))$in( + ). . .,$(,$))$in( )$sup(x,2)$hinge()$in( + )$paren($in( - )$q(5$in( )$sqrt(b)$in( )b$in( )$sup(a,2)$in( )$sup(y,3$in(/)2),8)$in( + )$q(3$in( )$sqrt(b)$in( )$sup(a,2)$in( )$sqrt(y),8)$in( - )$q($sqrt(b)$in( )$sup(a,2),8$in( )b$in( )$sqrt(y))$in( - )$q($sup(a,2),8$in( )$sqrt(b)$in( )b$in( )$sup(y,3$in(/)2))$in( + ). . .,$(,$))$in( )$sup(x,4)$in( + ). . .
  734.  
  735. (c133) (remfunction(f),
  736.  
  737.  clearscreen(),
  738.  disp(" SYMBOLIC APPROXIMATION METHODS  . . .  Taylor Series, continued "),
  739.  disp(" Example: Approximate Taylor solution of an implicit equation ") )$
  740. |$label(0,15,Times New Roman,) SYMBOLIC APPROXIMATION METHODS  . . .  Taylor Series$, continued 
  741.  
  742. |$label(0,15,Times New Roman,) Example: Approximate Taylor solution of an implicit equation 
  743.  
  744.  
  745. (c134) curve3:-x-2*x^2*y+y^3;
  746. |$label(0,15,Times New Roman,$(d134$))$sup(y,3)$hinge()$in( - )2$in( )$sup(x,2)$in( )y$hinge()$in( - )x
  747.  
  748. (c135) taylor_solve(curve3,y,x,0,[3]);
  749. |$label(0,15,Times New Roman,$(d135$) /T/ )$open([)$open([)y$hinge()$in( = )k0$in( )$sup(x,1$in(/)3)$hinge()$in( + )$q(2$in( )$sup(x,5$in(/)3),3$in( )k0)$hinge()$in( - )$q(8$in( )$sup(x,13$in(/)3),81$in( )$sup(k0,2))$in( + ). . .$ina($, )$hinge()$sup(k0,3)$hinge()$in( = )1$close(])$close(])
  750.  
  751. (c136) (remvalue(curve3),
  752.  
  753.  clearscreen(),
  754.  disp(" SYMBOLIC APPROXIMATION METHODS  . . .  Taylor Series, continued "),
  755.  disp(" Example: Find taylor solution of coupled O.D.E.'s. ") )$
  756. |$label(0,15,Times New Roman,) SYMBOLIC APPROXIMATION METHODS  . . .  Taylor Series$, continued 
  757.  
  758. |$label(0,15,Times New Roman,) Example: Find taylor solution of coupled O.D.E.'s. 
  759.  
  760.  
  761. (c137) eq:['diff(x,t,2)=c*x*y,'diff(y,t,2)=tan(x)+%e^(t*'diff(y,t))];
  762. |$label(0,15,Times New Roman,$(d137$))$open([)$q($sup(d,2)x,d$sup(t,2))$hinge()$in( = )c$hinge()$in( )x$hinge()$in( )y$ina($, )$hinge()$q($sup(d,2)y,d$sup(t,2))$hinge()$in( = )$sup($e(),t$in( )$q(dy,dt))$hinge()$in( + )tan$paren(x)$close(])
  763.  
  764. (c138) /* Use initial conditions X(0)=A, X'(0)=0, Y(0)=B, Y'(0)=3 .
  765. */
  766.      taylor_ode(eq,[x,y],t,3,[0,[a,0],[b,3]]);
  767. |$label(0,15,Times New Roman,$(d138$) /T/ )$open([)$open([)x$hinge()$in( = )a$hinge()$in( + )$q(a$in( )b$in( )c$in( )$sup(t,2),2)$hinge()$in( + )$q(a$in( )c$in( )$sup(t,3),2)$in( + ). . .$ina($, )$hinge()y$hinge()$in( = )b$hinge()$in( + )3$in( )t$hinge()$in( + )$q($paren(tan$paren(a)$in( + )1,$(,$))$in( )$sup(t,2),2)$hinge()$in( + )$q($sup(t,3),2)$in( + ). . .$close(])$close(])
  768.  
  769. (c139) (remvalue(eq),
  770.  
  771.  clearscreen(),
  772.  disp(dpart(" SYMBOLIC APPROXIMATION METHODS  . . . Pade Approximations ")),
  773.  disp(" Example: Compute Pade approximation of a function. ") )$
  774. |$label(0,15,Times New Roman,)$box( SYMBOLIC APPROXIMATION METHODS  . . . Pade Approximations )
  775.  
  776. |$label(0,15,Times New Roman,) Example: Compute Pade approximation of a function. 
  777.  
  778.  
  779. (c140) /*   A Pade approximation to F(X) is a rational function R(X)
  780.            which has the same taylor series, up to some order. */
  781.      ft:taylor(tan(x),x,0,8);
  782. |$label(0,15,Times New Roman,$(d140$) /T/ )x$hinge()$in( + )$q($sup(x,3),3)$hinge()$in( + )$q(2$in( )$sup(x,5),15)$hinge()$in( + )$q(17$in( )$sup(x,7),315)$in( + ). . .
  783.  
  784. (c141) fp:pade(ft,4,4);
  785. |$label(0,15,Times New Roman,$(d141$))$open([)$in( - )$q(10$in( )$sup(x,3)$in( - )105$in( )x,$sup(x,4)$in( - )45$in( )$sup(x,2)$in( + )105)$close(])
  786.  
  787. (c142) (fp:part(fp,1),taylor(fp,x,0,8));
  788. |$label(0,15,Times New Roman,$(d142$) /T/ )x$hinge()$in( + )$q($sup(x,3),3)$hinge()$in( + )$q(2$in( )$sup(x,5),15)$hinge()$in( + )$q(17$in( )$sup(x,7),315)$in( + ). . .
  789.  
  790. (c143) (clearscreen(),
  791.  disp(dpart(" SYMBOLIC APPROXIMATION METHODS  . . . Pade Approximations ")),
  792.  disp(" Pade approximations, continued ") )$
  793. |$label(0,15,Times New Roman,)$box( SYMBOLIC APPROXIMATION METHODS  . . . Pade Approximations )
  794.  
  795. |$label(0,15,Times New Roman,) Pade approximations$, continued 
  796.  
  797.  
  798. (c144) /*
  799.                    Plot the results.
  800. */
  801. (equalscale:false,ymin:-10,ymax:10, 
  802.  plot([tan(x),fp,ft],x,%pi/4,3*%pi/4,[0,2,4],false,false,
  803.   "TAN(X) (solid), Pade approximation(4,4) of TAN(X) (dashed),
  804.  and Taylor series(8) for TAN(X) (dot-dash)") )$
  805.  
  806. (c145) (remvalue(fp,ft,ymin,ymax),reset(equalscale),
  807.  
  808.  clearscreen(),
  809.  if get('lindstedt,'version)=false then load("lindst"),
  810.  disp(dpart(" SYMBOLIC APPROXIMATION METHODS  . . .  Perturbation Solutions of O.D.E.'s ")),
  811.  disp(" Example: Perturbation solution of an almost-harmonic oscillator ") )$
  812. |$label(0,15,Times New Roman,)$box( SYMBOLIC APPROXIMATION METHODS  . . .  Perturbation Solutions of O.D.E.'s )
  813.  
  814. |$label(0,15,Times New Roman,) Example: Perturbation solution of an almost-harmonic oscillator 
  815.  
  816.  
  817. (c146) depends(y,t)$
  818.  
  819. (c147) eq:diff(y,t,2)+w^2*y+e*y^3;
  820. |$label(0,15,Times New Roman,$(d147$))$q($sup(d,2)y,d$sup(t,2))$hinge()$in( + )e$in( )$sup(y,3)$hinge()$in( + )$sup(w,2)$in( )y
  821.  
  822. (c148) /*
  823.    where:
  824.  
  825.    Y(T)= Amplitude of the oscillator
  826.    W   = Angular frequency of the linearized oscillator
  827.    e   = Coefficient for cubic force term << 1 .
  828.  
  829.    The initial conditions are: Y(0) = A, Y'(0)= 0 .
  830.  
  831.  
  832.  
  833. */
  834. disp(" ")$
  835. |$label(0,15,Times New Roman,) 
  836.  
  837.  
  838. (c149) (clearscreen(),
  839.  disp(" SYMBOLIC APPROXIMATION METHODS  . . .  Perturbation Solutions of O.D.E.'s "),
  840.  disp(" Almost-harmonic oscillator, continued ") )$
  841. |$label(0,15,Times New Roman,) SYMBOLIC APPROXIMATION METHODS  . . .  Perturbation Solutions of O.D.E.'s 
  842.  
  843. |$label(0,15,Times New Roman,) Almost-harmonic oscillator$, continued 
  844.  
  845.  
  846. (c150) /* Lindstedt's method finds the approximate solution
  847.      and the perturbed frequency, to second order in e.
  848. */
  849. lindstedt(eq,e,2,[a,0]);
  850. |$label(0,15,Times New Roman,$(d150$))$open([)$open([)$open([)$q($paren(cos$paren(3$in( )%tau)$in( - )cos$paren(%tau),$(,$))$in( )$sup(a,3)$in( )e,32$in( )$sup(w,2))$hinge()$in( + )$q($paren(cos$paren(5$in( )%tau)$in( - )24$in( )cos$paren(3$in( )%tau)$in( + )23$in( )cos$paren(%tau),$(,$))$in( )$sup(a,5)$in( )$sup(e,2),1024$in( )$sup(w,4))$hinge()$in( + )cos$paren(%tau)$in( )a$close(])$ina($, )$hinge()%tau$hinge()$in( = )t$hinge()$in( )$open($()$q(3$in( )$sup(a,2)$in( )e,8$in( )$sup(w,2))$hinge()$in( - )$q(21$in( )$sup(a,4)$in( )$sup(e,2),256$in( )$sup(w,4))$hinge()$in( + )1$close($))$hinge()$in( )$paren(w,|,|)$close(])$close(])
  851.  
  852. (c151) (remvalue(eq), remove(y,dependency),
  853.  
  854.  clearscreen(),
  855.  disp(dpart(" NUMERICAL ANALYSIS ")),
  856.  disp(" Several Types of Arithmetic "),
  857.  disp(" Numerical Integration "),
  858.  disp(" Numerical Solution of O.D.E.'s "),
  859.  disp(" Fast Fourier Transforms "),
  860.  disp(" Interpolation of Roots of Equations "),
  861.  disp(" Least Squares Fit of Curves to Data "),
  862.  disp(" Generate Fortran Expressions "),
  863.  disp(" Increase Numerical Efficiency ") )$
  864. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS )
  865.  
  866. |$label(0,15,Times New Roman,) Several Types of Arithmetic 
  867.  
  868. |$label(0,15,Times New Roman,) Numerical Integration 
  869.  
  870. |$label(0,15,Times New Roman,) Numerical Solution of O.D.E.'s 
  871.  
  872. |$label(0,15,Times New Roman,) Fast Fourier Transforms 
  873.  
  874. |$label(0,15,Times New Roman,) Interpolation of Roots of Equations 
  875.  
  876. |$label(0,15,Times New Roman,) Least Squares Fit of Curves to Data 
  877.  
  878. |$label(0,15,Times New Roman,) Generate Fortran Expressions 
  879.  
  880. |$label(0,15,Times New Roman,) Increase Numerical Efficiency 
  881.  
  882.  
  883. (c152) (clearscreen(),
  884.  disp(dpart(" NUMERICAL ANALYSIS  . . .  Several Types of Arithmetic ")),
  885.  disp(" Example: Evaluate numerically ill-conditioned expressions. ") )$
  886. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS  . . .  Several Types of Arithmetic )
  887.  
  888. |$label(0,15,Times New Roman,) Example: Evaluate numerically ill-conditioned expressions. 
  889.  
  890.  
  891. (c153) (n1:10^30*sqrt(6)+1,n2:10^15*sqrt(2),n3:10^15*sqrt(3))$
  892.  
  893. (c154) /*          Ordinary floating point arithmetic gives the wrong result. */
  894.      float(n1)-float(n2)*float(n3);
  895. |$label(0,15,Times New Roman,$(d154$))1.20892e+24
  896.  
  897. (c155) /*       Example: Macsyma's exact arithmetic gives the correct result.
  898. */
  899.      radcan(n1-n2*n3);
  900. |$label(0,15,Times New Roman,$(d155$))1
  901.  
  902. (c156) /*   Example: Macsyma's arbitrary precision floating point arithmetic
  903.                        gives the correct result.
  904. */
  905.      (bfprecision:35,bfloat(n1)-bfloat(n2)*bfloat(n3));
  906. |$label(0,15,Times New Roman,$(d156$))$num(1.0b0)
  907.  
  908. (c157) (clearscreen(),
  909.  disp(" NUMERICAL ANALYSIS  . . .  Several Types of Arithmetic, continued "),
  910.  disp(" Example: Complex arithmetic "))$
  911. |$label(0,15,Times New Roman,) NUMERICAL ANALYSIS  . . .  Several Types of Arithmetic$, continued 
  912.  
  913. |$label(0,15,Times New Roman,) Example: Complex arithmetic 
  914.  
  915.  
  916. (c158) /*  Express ARCSIN(2) with exact complex arithmetic.
  917. */
  918.      n1:asin(2)=polarform(asin(2));
  919. |$label(0,15,Times New Roman,$(d158$))asin$paren(2)$hinge()$in( = )$sqrt($sup(log,2)$paren($sqrt(3)$in( + )2)$in( + )$q($sup($greektext(p),2),4))$hinge()$in( )$sup($e(),$in( - )$italictext(i)$in( )atan$paren($q(2$in( )log$paren($sqrt(3)$in( + )2),$greektext(p))))
  920.  
  921. (c159) /*  Derive some complex floating point representations.
  922. */
  923. n2:n1,numer,demoivre,expand;
  924. |$label(0,15,Times New Roman,$(d159$))$in( - )$italictext(i)$in( )log$paren(3.73205$in( )$italictext(i))$hinge()$in( = )1.5708$hinge()$in( - )1.31696$in( )$italictext(i)
  925.  
  926. (c160) rectform(n2);
  927. |$label(0,15,Times New Roman,$(d160$))1.5708$hinge()$in( - )1.31696$in( )$italictext(i)$hinge()$in( = )1.5708$hinge()$in( - )1.31696$in( )$italictext(i)
  928.  
  929. (c161) (reset(bfprecision),remvalue(n1,n2,n3),
  930.  
  931.  clearscreen(),
  932.  setup_autoload("qq",quanc8),
  933.  disp(dpart(" NUMERICAL ANALYSIS  . . .  Numerical Integration ")),
  934.  disp(" Example: Romberg numerical integration algorithm ") )$
  935. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS  . . .  Numerical Integration )
  936.  
  937. |$label(0,15,Times New Roman,) Example: Romberg numerical integration algorithm 
  938.  
  939.  
  940. (c162) f(x):= 1/(x^5+x+1);
  941. |$label(0,15,Times New Roman,$(d162$))f$paren(x)$hinge()$in( := )$q(1,$sup(x,5)$in( + )x$in( + )1)
  942.  
  943. (c163) /* Integrate F(X) from 0 to 1.5 . */  romberg(f,0,1.5);
  944. |$label(0,15,Times New Roman,$(d163$))0.75294
  945.  
  946. (c164) /*
  947.                     Example: Newton-Cotes quadrature
  948. */
  949. (g(x):=(mode_declare(x,float),sin(1/x)),g(x));
  950. |$label(0,15,Times New Roman,$(d164$))sin$paren($q(1,x))
  951.  
  952. (c165) quanc8('g,0.01,0.1);
  953. |$label(0,15,Times New Roman,$(d165$))$in( - )0.00903
  954.  
  955. (c166) (remfunction(f,g),
  956.  
  957.  clearscreen(),
  958.  if get('rugkut,'version)=false then load("rugkut"),
  959.  disp(dpart(" NUMERICAL ANALYSIS  . . .  Numerical Solution of O.D.E.'s ")), 
  960.  disp(" Example: Pair of oscillators with non-linear coupling ") )$
  961. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS  . . .  Numerical Solution of O.D.E.'s )
  962.  
  963. |$label(0,15,Times New Roman,) Example: Pair of oscillators with non-linear coupling 
  964.  
  965.  
  966. (c167) eqx : 'diff(x,t,2) + (1+y/3)*x = 0 ;
  967. |$label(0,15,Times New Roman,$(d167$))x$in( )$paren($q(y,3)$in( + )1,$(,$))$hinge()$in( + )$q($sup(d,2)x,d$sup(t,2))$hinge()$in( = )0
  968.  
  969. (c168) eqy : 'diff(y,t,2) + (1-x/3)*y = 0 ;
  970. |$label(0,15,Times New Roman,$(d168$))$q($sup(d,2)y,d$sup(t,2))$hinge()$in( + )$paren(1$in( - )$q(x,3),$(,$))$in( )y$hinge()$in( = )0
  971.  
  972. (c169) /* Specify initial conditions.
  973. */
  974. (icx : [ 'at(x,t=0) =  5 , 'at('diff(x,t),t=0) =  0 ] ,
  975.  icy : [ 'at(y,t=0) =  0 , 'at('diff(y,t),t=0) = -1/4 ] )$
  976.  
  977. (c170) (clearscreen(),
  978.  disp(" NUMERICAL ANALYSIS  . . .  Numerical Solution of O.D.E.'s "),
  979.  disp(" Pair of oscillators with non-linear coupling, continued "))$
  980. |$label(0,15,Times New Roman,) NUMERICAL ANALYSIS  . . .  Numerical Solution of O.D.E.'s 
  981.  
  982. |$label(0,15,Times New Roman,) Pair of oscillators with non-linear coupling$, continued 
  983.  
  984.  
  985. (c171) rk:runge_kutta([eqx,eqy], ['x,'y], 't, append(icx,icy), 0,
  986.       ev(4*%pi,numer), 0.1) $
  987.  
  988. (c172) /* Plot X(T), Y(T) and their derivatives versus time. */
  989. (equalscale:false, graph(assoc('t,rk), [assoc('x,rk),assoc('diff('x,t),rk),
  990.   assoc('y,rk),assoc('diff('y,t),rk)],[0,1,2,3],
  991.    "X (solid), X' (long dash), Y (short dash), Y' (dot)",
  992.    false, "Runge_Kutta Solution of Coupled Oscillators") )$
  993.  
  994. (c173) /* Phase space plot of [X(T),X'(T)] and [Y(T),Y'(T)] */
  995. graph([assoc('x,rk),assoc('y,rk)],[assoc('diff('x,t),rk),
  996.       assoc('diff('y,t),rk)],[0,2],
  997.       "Phase space plot of X, X' (solid) AND Y, Y' (dashed)",
  998.       false,"Runge_Kutta Solution of Coupled Oscillators")$
  999.  
  1000. (c174) (remvalue(eqx,eqy,icx,icy,rk), reset(equalscale),
  1001.  
  1002.  clearscreen(),
  1003.  if get('fft,'version)=false then load("fft"),
  1004.  disp(dpart(" NUMERICAL ANALYSIS  . . . Fast Fourier Transforms ")) )$
  1005. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS  . . . Fast Fourier Transforms )
  1006.  
  1007.  
  1008. (c175) /* Specify input function `a' at 8 points. */
  1009.       (array(aa,7),
  1010.       fillarray(aa,[-1.0,2.0,4.0,5.0,6.0,8.0,7.0,6.0]))$
  1011.  
  1012. (c176) /* Fast Fourier transform */
  1013.       (fft(complex,1,aa),listarray(aa));
  1014. |$label(0,15,Times New Roman,$(d176$))$open([)37.0$ina($, )$hinge()$in( - )7.94974$in( )$italictext(i)$hinge()$in( - )10.5355$ina($, )$hinge()$in( - )1.0$in( )$italictext(i)$hinge()$in( - )6.0$ina($, )$hinge()$in( - )1.94975$in( )$italictext(i)$hinge()$in( - )3.46447$ina($, )$hinge()$in( - )5.0$ina($, )$hinge()1.94974$in( )$italictext(i)$hinge()$in( - )3.46447$ina($, )$hinge()1.0$in( )$italictext(i)$hinge()$in( - )6.0$ina($, )$hinge()7.94975$in( )$italictext(i)$hinge()$in( - )10.5355$close(])
  1015.  
  1016. (c177) /* Fast sine transform (requires floating-point input) */
  1017.       (fillarray(aa,[-1.0,2.0,4.0,5.0,6.0,8.0,7.0,6.0]),
  1018.       sinfft(aa,1),listarray(aa));
  1019. |$label(0,15,Times New Roman,$(d177$))$open([)0.0$ina($, )$hinge()28.8501$ina($, )$hinge()$in( - )7.94974$ina($, )$hinge()4.19432$ina($, )$hinge()$in( - )1.0$ina($, )$hinge()0.63797$ina($, )$hinge()$in( - )1.94974$ina($, )$hinge()1.29373$close(])
  1020.  
  1021. (c178) (remarray(aa),
  1022.  
  1023.  clearscreen(),
  1024.  if get('bisect,'version)=false then load("bisect"),
  1025.  disp(dpart(" NUMERICAL ANALYSIS  . . . Iterative Solution of Equations ")) )$
  1026. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS  . . . Iterative Solution of Equations )
  1027.  
  1028.  
  1029. (c179) /* Example : Newton's method */ eq: cos(x)^3 = x $
  1030.  
  1031. (c180) root: newton(eq,x,0.);
  1032. |$label(0,15,Times New Roman,$(d180$))$open([)x$hinge()$in( = )0.58244$close(])
  1033.  
  1034. (c181) eq, root;
  1035. |$label(0,15,Times New Roman,$(d181$))0.58244$hinge()$in( = )0.58244
  1036.  
  1037. (c182) /* Example : Root by bisection */ f(x) := sin(x)^2 - ''ev(1/%pi,numer) $
  1038.  
  1039. (c183) root : root_by_bisection('f,0,1);
  1040. |$label(0,15,Times New Roman,$(d183$))0.59945
  1041.  
  1042. (c184) f(root);
  1043. |$label(0,15,Times New Roman,$(d184$))0.0
  1044.  
  1045. (c185) (remvalue(eq,root),remfunction(f),
  1046.  
  1047.  clearscreen(),
  1048.  if get('lsq,'version)=false then load("lsq"),
  1049.  disp(dpart(" NUMERICAL ANALYSIS  . . .  Least Squares Fit of Curves to Data ")) )$
  1050. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS  . . .  Least Squares Fit of Curves to Data )
  1051.  
  1052.  
  1053. (c186) /* Here are the abscissas and data values. */
  1054. (xlist:[0,1,2,3,4,5,6,7,8,9,10],
  1055.  ylist:[-1,2,4,5,4.5,3,3.5,6,9,8,9.5])$
  1056.  
  1057. (c187) /* Linear regression */
  1058. fit1:lsq(xlist,ylist,1,'x);
  1059. |$label(0,15,Times New Roman,$(d187$))0.84091$in( )x$hinge()$in( + )0.65909
  1060.  
  1061. (c188) /* Fit with a cubic polynomial. */
  1062. fit3:lsq(xlist,ylist,3,'x);
  1063. |$label(0,15,Times New Roman,$(d188$))0.03108$in( )$sup(x,3)$hinge()$in( - )0.45862$in( )$sup(x,2)$hinge()$in( + )2.54293$in( )x$hinge()$in( - )0.34615
  1064.  
  1065. (c189) /* Plot the data and fitted curves. */
  1066. (equalscale:false,ymin:-2,
  1067.   graph(xlist,ylist,[39],"Linear (solid) and cubic (dashed)",
  1068.   false,"Linear and Cubic Polynomials Fitted to Data",first),
  1069.   plot([fit1,fit3],x,0,10,[0,2],same,last))$
  1070.  
  1071. (c190) (remvalue(fit1,fit3,xlist,ylist,ymin),reset(equalscale),
  1072.  
  1073.  clearscreen(),
  1074.  disp(dpart(" NUMERICAL ANALYSIS  . . .  Generate Fortran Expressions ")),
  1075.  disp(" Example: Convert to Fortran and optimize. ") )$
  1076. |$label(0,15,Times New Roman,)$box( NUMERICAL ANALYSIS  . . .  Generate Fortran Expressions )
  1077.  
  1078. |$label(0,15,Times New Roman,) Example: Convert to Fortran and optimize. 
  1079.  
  1080.  
  1081. (c191) expr:expand(((c-d)^2-(a-1))*((c+d)^2+(a+1))*((a+1))^2);
  1082. |$label(0,15,Times New Roman,$(d191$))$sup(a,2)$in( )$sup(d,4)$hinge()$in( + )2$in( )a$in( )$sup(d,4)$hinge()$in( + )$sup(d,4)$hinge()$in( - )2$in( )$sup(a,2)$in( )$sup(c,2)$in( )$sup(d,2)$hinge()$in( - )4$in( )a$in( )$sup(c,2)$in( )$sup(d,2)$hinge()$in( - )2$in( )$sup(c,2)$in( )$sup(d,2)$hinge()$in( + )2$in( )$sup(a,2)$in( )$sup(d,2)$hinge()$in( + )4$in( )a$in( )$sup(d,2)$hinge()$in( + )2$in( )$sup(d,2)$hinge()$in( - )4$in( )$sup(a,3)$in( )c$in( )d$hinge()$in( - )8$in( )$sup(a,2)$in( )c$in( )d$hinge()$in( - )4$in( )a$in( )c$in( )d$hinge()$in( + )$sup(a,2)$in( )$sup(c,4)$hinge()$in( + )2$in( )a$in( )$sup(c,4)$hinge()$in( + )$sup(c,4)$hinge()$in( + )2$in( )$sup(a,2)$in( )$sup(c,2)$hinge()$in( + )4$in( )a$in( )$sup(c,2)$hinge()$in( + )2$in( )$sup(c,2)$hinge()$in( - )$sup(a,4)$hinge()$in( - )2$in( )$sup(a,3)$hinge()$in( + )2$in( )a$hinge()$in( + )1
  1083.  
  1084. (c192) fortran(expr)$
  1085.       EXPR = A**2*D**4+2*A*D**4+D**4-2*A**2*C**2*D**2-4*A*C**2*D**2-2*C*
  1086.      1   *2*D**2+2*A**2*D**2+4*A*D**2+2*D**2-4*A**3*C*D-8*A**2*C*D-4*A*C
  1087.      2   *D+A**2*C**4+2*A*C**4+C**4+2*A**2*C**2+4*A*C**2+2*C**2-A**4-2*A
  1088.      3   **3+2*A+1
  1089.  
  1090. (c193) /* Reduce the number of arithmetic operations by factoring. */
  1091.      expr:factorsum(expr);
  1092. |$label(0,15,Times New Roman,$(d193$))$sup($paren(a$in( + )1,$(,$)),2)$hinge()$in( )$open($()$sup($paren(d$in( - )c,$(,$)),2)$hinge()$in( - )a$hinge()$in( + )1$close($))$hinge()$in( )$open($()$sup($paren(d$in( + )c,$(,$)),2)$hinge()$in( + )a$hinge()$in( + )1$close($))
  1093.  
  1094. (c194) fortran(expr)$
  1095.       EXPR = (A+1)**2*((D-C)**2-A+1)*((D+C)**2+A+1)
  1096.  
  1097. (c195) (clearscreen(),
  1098.  disp(" NUMERICAL ANALYSIS  . . .  Generate Fortran Expressions, continued "),
  1099.  disp(" Example: Horner's method for optimizing rational functions ") )$
  1100. |$label(0,15,Times New Roman,) NUMERICAL ANALYSIS  . . .  Generate Fortran Expressions$, continued 
  1101.  
  1102. |$label(0,15,Times New Roman,) Example: Horner's method for optimizing rational functions 
  1103.  
  1104.  
  1105. (c196) expr:(7.4e8*x^3+1.0e-7*x^2-5.5*x+5.2e4)/(x^2+3.0e4*x-1.0e-6);
  1106. |$label(0,15,Times New Roman,$(d196$))$q(7.40001e+8$in( )$sup(x,3)$in( + )1.0e-7$in( )$sup(x,2)$in( - )5.5$in( )x$in( + )52000.0,$sup(x,2)$in( + )30000.0$in( )x$in( - )1.0e-6)
  1107.  
  1108. (c197) horner(expr,x),keepfloat:true;
  1109. |$label(0,15,Times New Roman,$(d197$))$q(x$in( )$paren(x$in( )$paren(7.40001e+8$in( )x$in( + )1.0e-7,$(,$))$in( - )5.5,$(,$))$in( + )52000.0,x$in( )$paren(1.0$in( )x$in( + )30000.0,$(,$))$in( - )1.0e-6)
  1110.  
  1111. (c198) (clearscreen(),
  1112.  disp(" NUMERICAL ANALYSIS  . . .  Generate Fortran Expressions "),
  1113.  disp(" Example: Optimize expressions for numerical analysis, continued "))$
  1114. |$label(0,15,Times New Roman,) NUMERICAL ANALYSIS  . . .  Generate Fortran Expressions 
  1115.  
  1116. |$label(0,15,Times New Roman,) Example: Optimize expressions for numerical analysis$, continued 
  1117.  
  1118.  
  1119. (c199) /*  The OPTIMIZE command picks out repeated subexpressions. */
  1120.      expr:sin(x^2+3*a^x)+(x^2+a^x)^2-log(x^2+3*a^x);
  1121. |$label(0,15,Times New Roman,$(d199$))sin$paren($sup(x,2)$in( + )3$in( )$sup(a,x))$hinge()$in( - )log$paren($sup(x,2)$in( + )3$in( )$sup(a,x))$hinge()$in( + )$sup($paren($sup(x,2)$in( + )$sup(a,x),$(,$)),2)
  1122.  
  1123. (c200) ex:optimize(expr);
  1124. |$label(0,15,Times New Roman,$(d200$))block$paren($paren(%1$ina($, )$hinge()%2$ina($, )$hinge()%3,[,])$ina($, )$hinge()%1$in( : )$sup(a,x)$ina($, )$hinge()%2$in( : )$sup(x,2)$ina($, )$hinge()%3$in( : )%2$in( + )3$in( )%1$ina($, )$hinge()sin$paren(%3)$in( - )log$paren(%3)$in( + )$sup($paren(%2$in( + )%1,$(,$)),2))
  1125.  
  1126. (c201) (fortran(part(ex,2)),fortran(part(ex,3)),fortran(part(ex,4)))$
  1127.       %1=A**X
  1128.       %2=X**2
  1129.       %3=%2+3*%1
  1130.  
  1131. (c202) fortran(y=part(ex,5))$
  1132.       Y = SIN(%3)-LOG(%3)+(%2+%1)**2
  1133.  
  1134. (c203) (remvalue(expr,ex),
  1135.  
  1136.  clearscreen(),
  1137.  disp(dpart(" GRAPHICS ")),
  1138.  disp(" "),
  1139.  disp(" 2-Dimensional Plotting "),
  1140.  disp(" "),
  1141.  disp(" 3-Dimensional Plotting ") )$
  1142. |$label(0,15,Times New Roman,)$box( GRAPHICS )
  1143.  
  1144. |$label(0,15,Times New Roman,) 
  1145.  
  1146. |$label(0,15,Times New Roman,) 2-Dimensional Plotting 
  1147.  
  1148. |$label(0,15,Times New Roman,) 
  1149.  
  1150. |$label(0,15,Times New Roman,) 3-Dimensional Plotting 
  1151.  
  1152.  
  1153. (c204) (clearscreen(),
  1154.  disp(dpart(" GRAPHICS  . . .  2-Dimensional Plotting ")) )$
  1155. |$label(0,15,Times New Roman,)$box( GRAPHICS  . . .  2-Dimensional Plotting )
  1156.  
  1157.  
  1158. (c205) /*       You have already seen examples of
  1159.  
  1160.         o Ordinary 2 dimensional plots
  1161.             - Eigenvalues
  1162.             - Laplace transforms
  1163.             - Pade approximations
  1164.  
  1165.         o Plot of discrete list of numbers
  1166.             - Runge-Kutta
  1167.  
  1168.  
  1169.             Example: A two dimensional parametric plot 
  1170. */
  1171. (plotnum:200,paramplot(s*sin(s),s*cos(s),s,0,40,false,false,
  1172.   "Parametric Plot of ( X = S*SIN(S) , Y = S*COS(S) )") )$
  1173.  
  1174. (c206) /*
  1175.                     Example: A two dimensional contour plot
  1176. */
  1177. (equalscale:true,contours:8,labelcontours:true,plotnum0:plotnum1:25,
  1178.  contourplot(y^2/2+cos(x)+x/2,x,-6,6,y,-3,3,false,false,
  1179.   "Contour Plot of Z = X/2+COS(X)+Y^2/2"))$
  1180.  
  1181. (c207) (reset(equalscale,contours,labelcontours,plotnum),
  1182.  
  1183.  clearscreen(),
  1184.  disp(dpart(" GRAPHICS  . . .  3-Dimensional Plotting ")),
  1185.  disp(" Example: A three dimensional plot "),
  1186.  disp(" ") )$
  1187. |$label(0,15,Times New Roman,)$box( GRAPHICS  . . .  3-Dimensional Plotting )
  1188.  
  1189. |$label(0,15,Times New Roman,) Example: A three dimensional plot 
  1190.  
  1191. |$label(0,15,Times New Roman,) 
  1192.  
  1193.  
  1194. (c208) (equalscale:false,
  1195.  plot3d(exp(-x^2-y^2)*x,x,-2,2,y,-1.5,2.5,false,false,
  1196.   "Cartesian Plot of the Function EXP((-X^2-Y^2)*X)"))$
  1197.  
  1198. (c209) /*
  1199.  
  1200.  
  1201.              Example: Different perspective on plot of the same function
  1202. */
  1203. (viewpt:[-4,4,.5],equalscale:false,replot())$
  1204.  
  1205. (c210) (reset(viewpt,equalscale,plotnum0,plotnum1),
  1206.  
  1207.  clearscreen(),
  1208.  leftjust:true,disp(" IN CLOSING . . . "),
  1209.  leftjust:false,disp(dpart(" MACSYMA CAN DO MUCH MORE THAN YOU HAVE SEEN HERE ")) )$
  1210. |$label(0,15,Times New Roman,) IN CLOSING . . . 
  1211.  
  1212. |$label(0,15,Times New Roman,)$box( MACSYMA CAN DO MUCH MORE THAN YOU HAVE SEEN HERE )
  1213.  
  1214.  
  1215. (c211) /*
  1216.      This demonstration only touches on the capabilities of Macsyma.
  1217.  
  1218.     o Macsyma puts at your disposal over 1,500 documented commands,
  1219.       predefined functions, option variables, data properties, and
  1220.       system variables.
  1221.  
  1222.     o You can write your own functions and programs.
  1223.  
  1224.     o You can use Macsyma interactively or write batch programs,
  1225.       performing both symbolic and numerical analyses.
  1226.  
  1227.  
  1228.  
  1229.  
  1230. */
  1231. reset(loadprint,pause_prompt)$
  1232.